package com.alibaba.citrus.cr.mn.order.center.forecastorder.service;

import com.alibaba.citrus.cr.mn.order.center.forecastorder.entity.ForecastOrderEntity;
import com.alibaba.lattice2.epoch.sdk.model.Result;
import com.epoch.app.crforecastsales.bo.ForecastOrderBO;
import com.epoch.app.mnordercenter.model.dto.*;

import java.util.List;

public interface ForecastOrderBizWriteService {

    List<CreateForecastResponseDTO> batchCreate(List<ForecastOrderBO> createForecastOrderSDOS, String taskId,String fromSys,String businessUnitCode);

    List<CreateForecastResponseDTO> batchCreateWithReturn(List<ForecastOrderBO> forecastOrderBOS, String taskId, String fromSys, String businessUnitCode);

    Result<List<SubmitForecastResponseDTO>> batchSubmit(ForecastBizBatchSubmitRequest request);

    Result<ModifyForecastResponseDTO> modify(ForecastOrderEntity forecastOrderEntity);

    Result<AnalysisForecastResponseDTO> batchAnalysis(AnalysisForecastRequest request);

    Result<List<CancelForecastResponseDTO>> batchCancel(CancelForecastRequest request);

    Result<List<ForecastReplyBizModifyResponse>> batchModifyReply(ForecastReplyBizBatchModifyRequest request);

    void batchConfirm(ConfirmReplyRequest confirmReplyRequest);

    List<ConfirmReplyResponseDTO> batchGroupConfirm(ConfirmGroupReplyRequest confirmGroupReplyRequest);

    List<ConfirmReplyResponseDTO> batchConfirmWithReturn(ConfirmReplyRequest confirmReplyRequest);

    List<ConfirmReplyResponseDTO> syncBatchConfirmWith(ConfirmReplyFulfillRequest confirmReplyRequest);

    Result<List<ForecastOrderBizCloseResponse>> batchClose(ForecastOrderBizBatchCloseRequest request);

    Result<List<ForecastOrderBizModifyActivityResponse>> batchModifyActivity(ForecastOrderBizBatchModifyActivityRequest request);
}
